package com.atguigu.juc.collection;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;

public class MapTest {

    public static void main(String[] args) {
        Map<String, String> map =
                // new HashMap<>(); 非同步容器：并发读写会抛异常java.util.ConcurrentModificationException
                // Collections.synchronizedMap(new HashMap<>()); 同步容器：读写操作都加锁，不会抛异常但是性能差
                new ConcurrentHashMap<>(); // 并发容器：基于锁分段技术，兼顾性能和数据一致性，能够应对并发读写操作

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                new Thread(() -> {
                    String data = UUID.randomUUID().toString().substring(0, 5).toUpperCase();

                    // 写操作
                    map.put(data, data);

                    // 读操作
                    System.out.println(map);

                }).start();
            }
        }
    }

}
